package com.ymm.system.api.facade;

import com.ymm.system.api.dto.PutOnCargoRequest;
import com.ymm.system.api.utils.Result;

public interface SystemCargoService {
    /**
     * 发货
     *
     * @param putOnCargoRequest 发货request
     * @param opsPersonType     操作人类型，0表示货主，1表示司机，2表示客服，3表示系统，可以为空
     * @param opsPersonId       操作人Id，可以为空
     * @return 货源Id
     */
    Result<Long> cargoDeliver(PutOnCargoRequest putOnCargoRequest, Integer opsPersonType, Long opsPersonId);

    /**
     * 下架在上架的货源
     *
     * @param cargoId       货源Id
     * @param opsPersonType 操作人类型，可以为空
     * @param opsPersonId   操作人Id，可以为空
     * @return 是否成功
     */
    Result<Long> cancelOnShelfCargo(Long cargoId, Integer opsPersonType, Long opsPersonId) throws Exception;

    /**
     * 下架被接单的货源
     *
     * @param cargoId       货源Id
     * @param opsPersonType 操作人类型，可以为空
     * @param opsPersonId   操作人Id，可以为空
     * @return 货源Id
     */
    Result<Long> cancelHodingCargo(Long cargoId, Long orderId, Integer opsPersonType, Long opsPersonId) throws Exception;
}
